type token =
  | PLUS
  | MINUS
  | TIMES
  | DIVIDE
  | EQ
  | NEQ
  | GT
  | LT
  | GEQ
  | LEQ
  | AND
  | OR
  | NOT
  | FPLUS
  | FMINUS
  | FTIMES
  | FDIVIDE
  | ASSIGN
  | LPAREN
  | RPAREN
  | LBRACE
  | RBRACE
  | COMMA
  | SEMI
  | INT
  | STRINGV
  | DQUOTATION
  | SQUOTATION
  | LSQUA
  | RSQUA
  | PERIOD
  | RETURN
  | FLO
  | WHILE
  | IF
  | ELSE
  | SHASH
  | ADD
  | SLIST
  | CREATE
  | SLHASH
  | MEM
  | FIND
  | PRINT
  | INTERSECT
  | EOF
  | LITERAL of (int)
  | FLOAT of (float)
  | ID of (string)
  | STR of (string)
  | CHAR of (char)

open Parsing;;
# 1 "parser.mly"
 open Ast 
# 58 "parser.ml"
let yytransl_const = [|
  257 (* PLUS *);
  258 (* MINUS *);
  259 (* TIMES *);
  260 (* DIVIDE *);
  261 (* EQ *);
  262 (* NEQ *);
  263 (* GT *);
  264 (* LT *);
  265 (* GEQ *);
  266 (* LEQ *);
  267 (* AND *);
  268 (* OR *);
  269 (* NOT *);
  270 (* FPLUS *);
  271 (* FMINUS *);
  272 (* FTIMES *);
  273 (* FDIVIDE *);
  274 (* ASSIGN *);
  275 (* LPAREN *);
  276 (* RPAREN *);
  277 (* LBRACE *);
  278 (* RBRACE *);
  279 (* COMMA *);
  280 (* SEMI *);
  281 (* INT *);
  282 (* STRINGV *);
  283 (* DQUOTATION *);
  284 (* SQUOTATION *);
  285 (* LSQUA *);
  286 (* RSQUA *);
  287 (* PERIOD *);
  288 (* RETURN *);
  289 (* FLO *);
  290 (* WHILE *);
  291 (* IF *);
  292 (* ELSE *);
  293 (* SHASH *);
  294 (* ADD *);
  295 (* SLIST *);
  296 (* CREATE *);
  297 (* SLHASH *);
  298 (* MEM *);
  299 (* FIND *);
  300 (* PRINT *);
  301 (* INTERSECT *);
    0 (* EOF *);
    0|]

let yytransl_block = [|
  302 (* LITERAL *);
  303 (* FLOAT *);
  304 (* ID *);
  305 (* STR *);
  306 (* CHAR *);
    0|]

let yylhs = "\255\255\
\002\000\002\000\002\000\002\000\002\000\002\000\002\000\002\000\
\002\000\002\000\002\000\002\000\002\000\002\000\002\000\002\000\
\002\000\002\000\002\000\002\000\002\000\002\000\002\000\002\000\
\002\000\002\000\002\000\002\000\002\000\002\000\002\000\002\000\
\002\000\002\000\002\000\002\000\002\000\002\000\002\000\002\000\
\002\000\002\000\002\000\002\000\002\000\002\000\002\000\003\000\
\003\000\003\000\003\000\001\000\001\000\004\000\008\000\008\000\
\009\000\009\000\010\000\010\000\010\000\007\000\007\000\011\000\
\011\000\005\000\005\000\006\000\006\000\000\000"

let yylen = "\002\000\
\005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\
\005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\
\002\000\001\000\001\000\001\000\001\000\001\000\004\000\004\000\
\003\000\002\000\002\000\002\000\002\000\005\000\003\000\005\000\
\006\000\005\000\003\000\011\000\006\000\006\000\005\000\005\000\
\005\000\004\000\004\000\004\000\002\000\002\000\010\000\002\000\
\003\000\005\000\007\000\000\000\002\000\007\000\000\000\001\000\
\001\000\003\000\002\000\002\000\002\000\000\000\002\000\001\000\
\003\000\000\000\001\000\001\000\003\000\002\000"

let yydefred = "\000\000\
\052\000\000\000\000\000\000\000\053\000\000\000\000\000\000\000\
\000\000\000\000\000\000\057\000\059\000\060\000\061\000\000\000\
\000\000\062\000\058\000\000\000\000\000\000\000\062\000\054\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\018\000\019\000\000\000\022\000\
\021\000\000\000\063\000\017\000\000\000\000\000\000\000\028\000\
\068\000\000\000\046\000\027\000\000\000\000\000\000\000\000\000\
\029\000\045\000\000\000\000\000\000\000\000\000\000\000\000\000\
\048\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\049\000\000\000\000\000\025\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\031\000\064\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\069\000\000\000\000\000\000\000\044\000\000\000\000\000\000\000\
\024\000\000\000\023\000\000\000\000\000\000\000\042\000\043\000\
\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\
\008\000\009\000\010\000\011\000\012\000\013\000\014\000\015\000\
\016\000\032\000\050\000\000\000\000\000\039\000\040\000\030\000\
\000\000\065\000\000\000\000\000\041\000\034\000\000\000\038\000\
\000\000\037\000\000\000\051\000\000\000\000\000\000\000\000\000\
\000\000\000\000\047\000\000\000\036\000"

let yydgoto = "\002\000\
\003\000\042\000\043\000\005\000\097\000\050\000\020\000\010\000\
\011\000\012\000\098\000"

let yysindex = "\012\000\
\000\000\000\000\216\254\251\254\000\000\234\254\223\254\231\254\
\232\254\007\255\005\255\000\000\000\000\000\000\000\000\008\255\
\234\254\000\000\000\000\049\255\189\255\189\255\000\000\000\000\
\242\254\244\254\237\254\189\255\245\254\016\255\019\255\011\255\
\227\254\252\254\024\255\044\255\000\000\000\000\247\254\000\000\
\000\000\040\255\000\000\000\000\079\000\112\255\036\255\000\000\
\000\000\238\254\000\000\000\000\189\255\189\255\062\255\028\255\
\000\000\000\000\021\255\189\255\189\255\189\255\026\255\239\254\
\000\000\189\255\189\255\189\255\189\255\189\255\189\255\189\255\
\189\255\189\255\189\255\189\255\189\255\189\255\189\255\189\255\
\189\255\000\000\027\255\018\255\000\000\056\255\057\255\031\255\
\032\255\037\255\039\255\041\255\071\255\069\255\000\000\000\000\
\081\255\080\255\076\255\059\255\061\255\063\255\083\255\095\255\
\096\255\097\255\098\255\099\255\100\255\101\255\102\255\103\255\
\104\255\106\255\107\255\108\255\109\255\110\255\115\255\113\255\
\000\000\151\255\151\255\090\255\000\000\091\255\114\255\189\255\
\000\000\189\255\000\000\189\255\243\254\189\255\000\000\000\000\
\084\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\116\255\189\255\000\000\000\000\000\000\
\127\255\000\000\189\255\117\255\000\000\000\000\151\255\000\000\
\189\255\000\000\126\255\000\000\143\255\121\255\189\255\138\255\
\149\255\140\255\000\000\125\255\000\000"

let yyrindex = "\000\000\
\000\000\000\000\174\000\000\000\000\000\155\255\000\000\000\000\
\000\000\000\000\158\255\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\239\255\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\007\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\159\255\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\161\255\000\000\000\000\000\000\000\000\031\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\055\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000"

let yygindex = "\000\000\
\000\000\235\255\150\255\000\000\000\000\000\000\159\000\000\000\
\000\000\170\000\000\000"

let yytablesize = 352
let yytable = "\044\000\
\045\000\056\000\007\000\008\000\163\000\084\000\051\000\004\000\
\061\000\062\000\009\000\085\000\001\000\006\000\013\000\155\000\
\156\000\164\000\057\000\063\000\100\000\064\000\014\000\015\000\
\101\000\102\000\016\000\017\000\018\000\049\000\103\000\086\000\
\087\000\047\000\053\000\048\000\052\000\054\000\094\000\095\000\
\096\000\055\000\059\000\058\000\104\000\105\000\106\000\107\000\
\108\000\109\000\110\000\111\000\112\000\113\000\114\000\115\000\
\116\000\117\000\118\000\119\000\172\000\021\000\060\000\065\000\
\083\000\092\000\121\000\022\000\093\000\023\000\024\000\099\000\
\120\000\025\000\026\000\122\000\123\000\027\000\124\000\125\000\
\028\000\029\000\030\000\031\000\126\000\032\000\127\000\033\000\
\128\000\034\000\129\000\130\000\035\000\036\000\037\000\038\000\
\039\000\040\000\041\000\088\000\131\000\089\000\132\000\090\000\
\091\000\133\000\160\000\134\000\161\000\135\000\162\000\136\000\
\165\000\137\000\138\000\139\000\140\000\141\000\142\000\143\000\
\144\000\145\000\146\000\147\000\021\000\148\000\149\000\150\000\
\151\000\152\000\022\000\166\000\023\000\082\000\153\000\168\000\
\025\000\026\000\157\000\158\000\027\000\170\000\154\000\028\000\
\029\000\030\000\031\000\173\000\032\000\169\000\033\000\167\000\
\034\000\177\000\174\000\035\000\036\000\037\000\038\000\039\000\
\040\000\041\000\159\000\021\000\171\000\175\000\176\000\178\000\
\179\000\022\000\180\000\023\000\181\000\070\000\055\000\025\000\
\026\000\056\000\066\000\027\000\067\000\046\000\028\000\029\000\
\030\000\031\000\019\000\032\000\000\000\033\000\000\000\034\000\
\000\000\000\000\035\000\036\000\037\000\038\000\039\000\040\000\
\041\000\021\000\000\000\000\000\000\000\000\000\000\000\022\000\
\000\000\000\000\000\000\000\000\000\000\025\000\026\000\000\000\
\000\000\027\000\000\000\000\000\028\000\029\000\000\000\000\000\
\000\000\032\000\000\000\033\000\000\000\034\000\000\000\000\000\
\035\000\036\000\037\000\038\000\039\000\040\000\041\000\020\000\
\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
\020\000\020\000\020\000\000\000\020\000\020\000\020\000\020\000\
\000\000\000\000\020\000\000\000\000\000\020\000\020\000\026\000\
\026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\
\026\000\026\000\026\000\000\000\026\000\026\000\026\000\026\000\
\000\000\000\000\026\000\000\000\000\000\026\000\026\000\035\000\
\035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\
\035\000\035\000\035\000\000\000\035\000\035\000\035\000\035\000\
\000\000\000\000\035\000\000\000\000\000\035\000\035\000\033\000\
\033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\
\033\000\033\000\033\000\000\000\033\000\033\000\033\000\033\000\
\000\000\000\000\033\000\000\000\000\000\033\000\033\000\066\000\
\067\000\068\000\069\000\070\000\071\000\072\000\073\000\074\000\
\075\000\076\000\077\000\000\000\078\000\079\000\080\000\081\000"

let yycheck = "\021\000\
\022\000\031\001\025\001\026\001\018\001\024\001\028\000\048\001\
\018\001\019\001\033\001\030\001\001\000\019\001\048\001\122\000\
\123\000\031\001\048\001\029\001\038\001\031\001\048\001\048\001\
\042\001\043\001\020\001\023\001\021\001\049\001\048\001\053\000\
\054\000\048\001\019\001\048\001\048\001\019\001\060\000\061\000\
\062\000\031\001\019\001\048\001\066\000\067\000\068\000\069\000\
\070\000\071\000\072\000\073\000\074\000\075\000\076\000\077\000\
\078\000\079\000\080\000\081\000\167\000\013\001\019\001\024\001\
\029\001\038\001\049\001\019\001\048\001\021\001\022\001\046\001\
\046\001\025\001\026\001\020\001\020\001\029\001\048\001\048\001\
\032\001\033\001\034\001\035\001\048\001\037\001\048\001\039\001\
\048\001\041\001\020\001\023\001\044\001\045\001\046\001\047\001\
\048\001\049\001\050\001\038\001\020\001\040\001\023\001\042\001\
\043\001\030\001\128\000\049\001\130\000\049\001\132\000\049\001\
\134\000\031\001\020\001\020\001\020\001\020\001\020\001\020\001\
\020\001\020\001\020\001\020\001\013\001\020\001\020\001\020\001\
\020\001\020\001\019\001\048\001\021\001\022\001\020\001\157\000\
\025\001\026\001\049\001\049\001\029\001\163\000\030\001\032\001\
\033\001\034\001\035\001\169\000\037\001\023\001\039\001\036\001\
\041\001\175\000\029\001\044\001\045\001\046\001\047\001\048\001\
\049\001\050\001\049\001\013\001\048\001\023\001\046\001\030\001\
\020\001\019\001\031\001\021\001\048\001\000\000\020\001\025\001\
\026\001\020\001\020\001\029\001\020\001\023\000\032\001\033\001\
\034\001\035\001\017\000\037\001\255\255\039\001\255\255\041\001\
\255\255\255\255\044\001\045\001\046\001\047\001\048\001\049\001\
\050\001\013\001\255\255\255\255\255\255\255\255\255\255\019\001\
\255\255\255\255\255\255\255\255\255\255\025\001\026\001\255\255\
\255\255\029\001\255\255\255\255\032\001\033\001\255\255\255\255\
\255\255\037\001\255\255\039\001\255\255\041\001\255\255\255\255\
\044\001\045\001\046\001\047\001\048\001\049\001\050\001\001\001\
\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\
\010\001\011\001\012\001\255\255\014\001\015\001\016\001\017\001\
\255\255\255\255\020\001\255\255\255\255\023\001\024\001\001\001\
\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\
\010\001\011\001\012\001\255\255\014\001\015\001\016\001\017\001\
\255\255\255\255\020\001\255\255\255\255\023\001\024\001\001\001\
\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\
\010\001\011\001\012\001\255\255\014\001\015\001\016\001\017\001\
\255\255\255\255\020\001\255\255\255\255\023\001\024\001\001\001\
\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\
\010\001\011\001\012\001\255\255\014\001\015\001\016\001\017\001\
\255\255\255\255\020\001\255\255\255\255\023\001\024\001\001\001\
\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\
\010\001\011\001\012\001\255\255\014\001\015\001\016\001\017\001"

let yynames_const = "\
  PLUS\000\
  MINUS\000\
  TIMES\000\
  DIVIDE\000\
  EQ\000\
  NEQ\000\
  GT\000\
  LT\000\
  GEQ\000\
  LEQ\000\
  AND\000\
  OR\000\
  NOT\000\
  FPLUS\000\
  FMINUS\000\
  FTIMES\000\
  FDIVIDE\000\
  ASSIGN\000\
  LPAREN\000\
  RPAREN\000\
  LBRACE\000\
  RBRACE\000\
  COMMA\000\
  SEMI\000\
  INT\000\
  STRINGV\000\
  DQUOTATION\000\
  SQUOTATION\000\
  LSQUA\000\
  RSQUA\000\
  PERIOD\000\
  RETURN\000\
  FLO\000\
  WHILE\000\
  IF\000\
  ELSE\000\
  SHASH\000\
  ADD\000\
  SLIST\000\
  CREATE\000\
  SLHASH\000\
  MEM\000\
  FIND\000\
  PRINT\000\
  INTERSECT\000\
  EOF\000\
  "

let yynames_block = "\
  LITERAL\000\
  FLOAT\000\
  ID\000\
  STR\000\
  CHAR\000\
  "

let yyact = [|
  (fun _ -> failwith "parser")
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 23 "parser.mly"
                                 ( Binop(_2, Add, _4) )
# 379 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 24 "parser.mly"
                                 ( Binop(_2, Sub, _4) )
# 387 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 25 "parser.mly"
                                 ( Binop(_2, Mul, _4) )
# 395 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 26 "parser.mly"
                                 ( Binop(_2, Div, _4) )
# 403 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 27 "parser.mly"
                             ( Binop(_2, Equal, _4) )
# 411 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 28 "parser.mly"
                              ( Binop(_2, Neq, _4) )
# 419 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 29 "parser.mly"
                             ( Binop(_2, Greater , _4) )
# 427 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 30 "parser.mly"
                             ( Binop(_2, Less, _4) )
# 435 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 31 "parser.mly"
                              ( Binop(_2, Geq, _4) )
# 443 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 32 "parser.mly"
                              ( Binop(_2, Leq, _4) )
# 451 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 33 "parser.mly"
                              ( Binop(_2, And, _4) )
# 459 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 34 "parser.mly"
                             ( Binop(_2, Or, _4) )
# 467 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 35 "parser.mly"
                                  ( FBinop(_2, Fadd, _4) )
# 475 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 36 "parser.mly"
                                  ( FBinop(_2, Fsub, _4) )
# 483 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 37 "parser.mly"
                                  ( FBinop(_2, Fmul, _4) )
# 491 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 38 "parser.mly"
                                  ( FBinop(_2, Fdiv, _4) )
# 499 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 :  Ast.expr) in
    Obj.repr(
# 39 "parser.mly"
                   ( Not(_2) )
# 506 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : int) in
    Obj.repr(
# 40 "parser.mly"
                   ( Lit(_1) )
# 513 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : float) in
    Obj.repr(
# 41 "parser.mly"
                   ( Float(_1))
# 520 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 42 "parser.mly"
                   ( Id(_1))
# 527 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : char) in
    Obj.repr(
# 43 "parser.mly"
                   ( Char(_1))
# 534 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 44 "parser.mly"
                   ( Str(_1))
# 541 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 3 : string) in
    let _3 = (Parsing.peek_val __caml_parser_env 1 : 'actuals_opt) in
    Obj.repr(
# 45 "parser.mly"
                               (Call(_1,_3))
# 549 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _3 = (Parsing.peek_val __caml_parser_env 1 : string) in
    Obj.repr(
# 46 "parser.mly"
                              (Print (_3))
# 556 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'string_list) in
    Obj.repr(
# 47 "parser.mly"
                              (Slist(_2))
# 563 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 48 "parser.mly"
                   (Int(_2))
# 570 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 49 "parser.mly"
                   (Flo(_2))
# 577 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 50 "parser.mly"
                    (Stringv(_2))
# 584 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 51 "parser.mly"
                   (StringList(_2))
# 591 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _4 = (Parsing.peek_val __caml_parser_env 1 : string) in
    let _5 = (Parsing.peek_val __caml_parser_env 0 :  Ast.expr) in
    Obj.repr(
# 52 "parser.mly"
                           (StringListAdd(_4,_5) )
# 599 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : string) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 :  Ast.expr) in
    Obj.repr(
# 53 "parser.mly"
                   (Assign(_1,_3))
# 607 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 : string) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 : int) in
    Obj.repr(
# 54 "parser.mly"
                             (IntArray(_2,_4))
# 615 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 5 : string) in
    let _3 = (Parsing.peek_val __caml_parser_env 3 : int) in
    let _6 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 55 "parser.mly"
                                   (ObjArray(_1,_3,_6))
# 624 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 4 : string) in
    let _3 = (Parsing.peek_val __caml_parser_env 2 : string) in
    let _5 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 56 "parser.mly"
                         (Objpoint(_1,_3,_5))
# 633 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : string) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 57 "parser.mly"
               (Onedot(_1,_3))
# 641 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 10 : string) in
    let _3 = (Parsing.peek_val __caml_parser_env 8 : int) in
    let _6 = (Parsing.peek_val __caml_parser_env 5 : string) in
    let _8 = (Parsing.peek_val __caml_parser_env 3 : int) in
    let _11 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 58 "parser.mly"
                                                                 (Twodot(_1,_3,_6,_8,_11))
# 652 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 5 : string) in
    let _3 = (Parsing.peek_val __caml_parser_env 3 : int) in
    let _6 = (Parsing.peek_val __caml_parser_env 0 :  Ast.expr) in
    Obj.repr(
# 59 "parser.mly"
                                     (ArrAssign(_1,_3,_6))
# 661 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _4 = (Parsing.peek_val __caml_parser_env 2 : string) in
    let _5 = (Parsing.peek_val __caml_parser_env 1 : string) in
    let _6 = (Parsing.peek_val __caml_parser_env 0 :  Ast.expr) in
    Obj.repr(
# 60 "parser.mly"
                               (Sadd (_4,_5,_6))
# 670 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _4 = (Parsing.peek_val __caml_parser_env 1 : string) in
    let _5 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 61 "parser.mly"
                           (Smem(_4,_5))
# 678 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _4 = (Parsing.peek_val __caml_parser_env 1 : string) in
    let _5 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 62 "parser.mly"
                            (Sfind(_4,_5))
# 686 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 4 : string) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 : string) in
    let _5 = (Parsing.peek_val __caml_parser_env 0 :  Ast.expr) in
    Obj.repr(
# 63 "parser.mly"
                         (SLadd (_1,_4,_5))
# 695 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 3 : string) in
    let _4 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 64 "parser.mly"
                    (SLmem(_1,_4))
# 703 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 3 : string) in
    let _4 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 65 "parser.mly"
                     (SLfind(_1,_4))
# 711 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _4 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 66 "parser.mly"
                           (Scre(_4))
# 718 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 67 "parser.mly"
              (SLcre(_2))
# 725 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 :  Ast.expr) in
    Obj.repr(
# 68 "parser.mly"
                   (Return(_2))
# 732 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _3 = (Parsing.peek_val __caml_parser_env 7 :  Ast.expr) in
    let _5 = (Parsing.peek_val __caml_parser_env 5 :  Ast.expr) in
    let _7 = (Parsing.peek_val __caml_parser_env 3 :  Ast.expr) in
    let _9 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 69 "parser.mly"
                                                                (Intersect(_3,_5,_7,_9))
# 742 "parser.ml"
               :  Ast.expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 1 :  Ast.expr) in
    Obj.repr(
# 73 "parser.mly"
                   (Expr(_1))
# 749 "parser.ml"
               :  Ast.stmt))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'stmt_list) in
    Obj.repr(
# 74 "parser.mly"
                                 (Block(List.rev _2))
# 756 "parser.ml"
               :  Ast.stmt))
; (fun __caml_parser_env ->
    let _3 = (Parsing.peek_val __caml_parser_env 2 :  Ast.expr) in
    let _5 = (Parsing.peek_val __caml_parser_env 0 :  Ast.stmt) in
    Obj.repr(
# 75 "parser.mly"
                                 (While(_3,_5))
# 764 "parser.ml"
               :  Ast.stmt))
; (fun __caml_parser_env ->
    let _3 = (Parsing.peek_val __caml_parser_env 4 :  Ast.expr) in
    let _5 = (Parsing.peek_val __caml_parser_env 2 :  Ast.stmt) in
    let _7 = (Parsing.peek_val __caml_parser_env 0 :  Ast.stmt) in
    Obj.repr(
# 76 "parser.mly"
                                       (If(_3,_5,_7))
# 773 "parser.ml"
               :  Ast.stmt))
; (fun __caml_parser_env ->
    Obj.repr(
# 79 "parser.mly"
                   ([])
# 779 "parser.ml"
               :  Ast.program))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 1 :  Ast.program) in
    let _2 = (Parsing.peek_val __caml_parser_env 0 :  Ast.func) in
    Obj.repr(
# 80 "parser.mly"
                   (_2::_1)
# 787 "parser.ml"
               :  Ast.program))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 6 : string) in
    let _3 = (Parsing.peek_val __caml_parser_env 4 : 'formals_opt) in
    let _6 = (Parsing.peek_val __caml_parser_env 1 : 'stmt_list) in
    Obj.repr(
# 84 "parser.mly"
({ fname=_1; formals=_3; body=Block(List.rev _6); })
# 796 "parser.ml"
               :  Ast.func))
; (fun __caml_parser_env ->
    Obj.repr(
# 87 "parser.mly"
                   ([])
# 802 "parser.ml"
               : 'formals_opt))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'formal_list) in
    Obj.repr(
# 88 "parser.mly"
                   (List.rev _1)
# 809 "parser.ml"
               : 'formals_opt))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'var) in
    Obj.repr(
# 91 "parser.mly"
                    ([_1])
# 816 "parser.ml"
               : 'formal_list))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'formal_list) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'var) in
    Obj.repr(
# 92 "parser.mly"
                        (_3::_1)
# 824 "parser.ml"
               : 'formal_list))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 98 "parser.mly"
                        (_2)
# 831 "parser.ml"
               : 'var))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 99 "parser.mly"
                        (_2)
# 838 "parser.ml"
               : 'var))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 100 "parser.mly"
                        (_2)
# 845 "parser.ml"
               : 'var))
; (fun __caml_parser_env ->
    Obj.repr(
# 104 "parser.mly"
                   ([])
# 851 "parser.ml"
               : 'stmt_list))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 1 : 'stmt_list) in
    let _2 = (Parsing.peek_val __caml_parser_env 0 :  Ast.stmt) in
    Obj.repr(
# 105 "parser.mly"
                    (_2::_1)
# 859 "parser.ml"
               : 'stmt_list))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 :  Ast.expr) in
    Obj.repr(
# 108 "parser.mly"
               ([_1])
# 866 "parser.ml"
               : 'actuals_list))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'actuals_list) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 :  Ast.expr) in
    Obj.repr(
# 109 "parser.mly"
                          (_3 :: _1)
# 874 "parser.ml"
               : 'actuals_list))
; (fun __caml_parser_env ->
    Obj.repr(
# 112 "parser.mly"
               ([])
# 880 "parser.ml"
               : 'actuals_opt))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'actuals_list) in
    Obj.repr(
# 113 "parser.mly"
               (List.rev _1)
# 887 "parser.ml"
               : 'actuals_opt))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 116 "parser.mly"
                    ([_1])
# 894 "parser.ml"
               : 'string_list))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'string_list) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 117 "parser.mly"
                       (_3::_1)
# 902 "parser.ml"
               : 'string_list))
(* Entry program *)
; (fun __caml_parser_env -> raise (Parsing.YYexit (Parsing.peek_val __caml_parser_env 0)))
|]
let yytables =
  { Parsing.actions=yyact;
    Parsing.transl_const=yytransl_const;
    Parsing.transl_block=yytransl_block;
    Parsing.lhs=yylhs;
    Parsing.len=yylen;
    Parsing.defred=yydefred;
    Parsing.dgoto=yydgoto;
    Parsing.sindex=yysindex;
    Parsing.rindex=yyrindex;
    Parsing.gindex=yygindex;
    Parsing.tablesize=yytablesize;
    Parsing.table=yytable;
    Parsing.check=yycheck;
    Parsing.error_function=parse_error;
    Parsing.names_const=yynames_const;
    Parsing.names_block=yynames_block }
let program (lexfun : Lexing.lexbuf -> token) (lexbuf : Lexing.lexbuf) =
   (Parsing.yyparse yytables 1 lexfun lexbuf :  Ast.program)
